The present application relates generally to an improved data processing apparatus and method and, more specifically, to mechanisms for directed resource folding, i.e. freeing resources by limiting the set of resources between which tasks are distributed, in order to provide more efficient power management.
Many modern data processing system architectures utilize operating system and virtualization mechanisms, e.g., hypervisors, to perform resource management. Operating systems and hypervisors are in-band resource managers on data processing systems that manage the allocation of virtual and physical resources to processes/tasks. They determine when, and what, physical resources get used by which tasks executing in the data processing system. In the most prevalent mode of operation, the resource scheduler/dispatcher/manager of the operating system or hypervisor has a load-balancing component that distributes the tasks evenly among the available resources to ensure good performance.
Known mechanisms for performing this load-balancing do so independent of any considerations from the platform, i.e. hardware and firmware, such as the basic input/output system (BIOS), service firmware, and the like. To the contrary, the load-balancing mechanisms use only information available at the resource scheduling layer, such as resource utilization, task priority, static resource organization information (such as core topology in terms of which cores map to a socket), etc. There is no runtime feedback from a lower platform layer that is used to optimize the implementations of these load-balancing mechanisms.